#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define MAXN 100001
int n;
int A[MAXN] = {0}, B[MAXN] = {0};
int min = MAXN;
void dfs(int level)
{//这里遍历所有的可能的序列
    int i;
    if(level == n)
    {//递归边界，到最后一层计算权值。
        int tmp = 0;
        for(i = 0; i < n; i++)
        {
            tmp += abs(A[i] - B[i]);
        }
        for(i = 1; i < n; i++)
        {
            tmp += pow((B[i - 1] - B[i]), 2);
        }
        if(tmp < min)min = tmp;
    }else{
        for (i = 0; i < 10; i++)
        {
            B[level] = i;
            dfs(level + 1);
        }
    }
}
int main()
{
    int i;
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    {
        scanf("%d", &A[i]);
    }
    dfs(0);
    printf("%d\n", min);
    return 0;
}